<?php

namespace Modules\Admin\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\RoleRequest;
use Spatie\Permission\Models\Role;


class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取所有的权限数据
        $rolesdate = Role::get();

        return view('admin::role.index',compact('rolesdate'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
//        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request,RoleRequest $roleRequest)
    {
        //利用手册中给的方法进行角色数据的添加
         Role::create([
             'name'=> $request->input('name'),
             'title'=> $request->input('title')
         ]);
         //设置闪存，并返回
        session()->flash('success','角色添加成功');
        return redirect()->route('role.index');
    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,RoleRequest $roleRequest,$id)
    {
        //找到对应id的角色数据
        $role = Role::find($id);
        //用编辑过后的数据对数据表中的原数据进行替换
        $role->title = $request->input('title');
        $role->name = $request->input('name');
        $role->save();
        //设置闪存，并返回
        session()->flash('success','角色编辑成功');
        return redirect()->route('role.index');
    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //获取想要删除的对应id的数据
        $role = Role::find($id);
        $role->delete();
        session()->flash('角色删除成功');
        return redirect()->back();
    }



    //加载设置权限的模板
    public function permission(Role $role){


        //获取后台用户所有模块的权限数据,下面的这行代码是从github里面找到的
        $module = \HDModule::getPermissionByGuard('admin');
//        dd($module);
        //加载设置权限的模板
        return view('admin::role.permission',compact('module','role'));

    }

    //处理设置权限操作
    public function assignPermission(Request $request,Role $role){
        //调用组件内的为角色添加权限的方法,syncPermissions()方法可以重构角色的权限
//        dd($request->input('name'));
        $role->syncPermissions($request->input('name'));

        //设置闪存，并返回
        session()->flash('success','权限设置成功');
        return redirect()->back();
    }

}
